Amazon S3의 CSV 파일을 사용하여 Databricks Delta Lake 테이블 생성하기
안녕하세요 DA사업본부 송영진입니다.
오늘은 대규모 데이터 처리와 분석을 위한 클라우드 기반 플랫폼인 Databricks에서 Amazon S3에 저장된 CSV 파일을 활용하여 Delta Lake를 사용하여 효율적으로 관리 가능한 테이블을 생성하는 방법을 알아보겠습니다.
Databricks란?
Databricks는 클라우드 기반의 데이터 처리와 분석을 위한 통합 플랫폼입니다. Apache Spark 기반으로 대용량 데이터 처리, 머신 러닝, 인공 지능 및 대화형 분석을 위한 환경을 제공합니다.
데이터 레이크와 데이터웨어하우스의 장점을 결합한 레이크하우스 아키텍쳐라는 개념을 사용한 SaaS 서비스로 AWS, GCP, Azure와 통합하여 클라우드 환경에서 실행 할 수 있습니다.
Delta Lake란?
Delta Lake는 스트리밍 및 배치 작업 모두에 대해 데이터 레이크의 안정성, 보안 및 성능을 제공하는 개방형 포맷 스토리지 계층입니다. Delta Lake는 데이터 사일로를 정형, 반정형 및 비정형 데이터를 위한 단일 홈으로 대체함으로써 비용 효율적이고 확장성이 뛰어난 레이크하우스의 기반이 됩니다.
(Papago번역 사용)
위의 내용과 같이 Delta Lake는 Databricks에서 테이블을 다루는 내부 형식의 정의입니다. Apache Spark 기반이며, ACID 트랜잭션을 지원하고 가장 포인트인 과거 상태를 복원할 수 있는 시간 여행 기능(Query as of time)을 지원합니다.
Delta Lake의 테이블 만들어보기
CSV 파일 읽기:
- 다음 코드를 사용하여 S3의 파일을 spark의 데이터 프레임으로 읽습니다.
csv_path = "s3://bucket-name/folder/your-file.csv" df = spark.read.csv(csv_path, header=True)
- "bucket-name"은 S3 버켓의 이름, "folder"는 파일이 위치한 폴더 경로, "file.csv"는 읽을 CSV 파일의 이름에 맞게 수정해야 합니다.
- CSV 파일을 읽은 데이터프레임을 Delta 테이블로 변환합니다. 이를 위해 다음 코드를 실행합니다.
( df .write .format('delta') .save(f'/delta/table-name') ) spark.sql(f''' CREATE TABLE table-name USING DELTA LOCATION '/delta/table-name' ''')
- Delta 테이블이 성공적으로 생성되었는지 확인하기 위해 다음 SQL을 사용하여 확인해보겠습니다.
display(spark.sql('SELECT * FROM table-name LIMIT 100'))
이번에도 Redshift의 샘플 데이터인 ticketdb의 USER 테이블을 사용한 로드가 된 것을 확인 하실 수 있습니다.
마지막으로
Amazon S3에 저장된 CSV 파일을 사용하여 Databricks의 Delta 테이블을 생성하는 방법을 알아보았습니다. Delta Lake는 대규모 데이터 처리 및 분석 작업을 위한 형식입니다. 이미 Apache Spark에 대해 알고 계시다면 클러스터를 따로 구축하지 않아도 자동으로 Databricks를 사용하여 바로 데이터 엔지니어링이나 분석을 사용하실 수 있습니다. 저도 더욱 Databricks에 대한 공부를 해서 어떻게 써야 좋을지 알아보도록 하겠습니다. 감사합니다!